package com.weetop.akly.appConfig;

import android.app.Application;
import android.content.Context;

import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.FormatStrategy;
import com.orhanobut.logger.Logger;
import com.orhanobut.logger.PrettyFormatStrategy;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.tencent.mmkv.MMKV;
import com.weetop.akly.bean.AccountInfoBean;

import java.util.ArrayList;
import java.util.HashMap;

import io.rong.imkit.RongIM;
import io.rong.imlib.RongIMClient;

public class MyApplication extends Application implements RongIMClient.ConnectionStatusListener {
    private static Context mContext;
    private ArrayList<String> testList=new ArrayList<>();

    private AccountInfoBean accountInfoBean;
    private String mAccount;

    //获取上下文
    public HashMap<String,String> getGlobalData(){
        HashMap<String,String> map=new HashMap<>();
        return map;
    }

    public AccountInfoBean getAccountInfoBean() {
        return accountInfoBean;
    }

    public void setAccountInfoBean(AccountInfoBean accountInfoBean) {
        this.accountInfoBean = accountInfoBean;
        setmAccount(accountInfoBean.getAccount().getAccount());
    }

    public String getmAccount() {
        return mAccount;
    }

    private void setmAccount(String mAccount) {
        this.mAccount = mAccount;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        mContext = this;
//        QMUISwipeBackActivityManager.init(this);
        RongIM.init(this,"lmxuhwaglesxd");
        MMKV.initialize(this);

        initLogger();
        testList.add("ss");
        testList.add("ss");
        testList.add("ss");
        testList.add("ss");
        testList.add("ss");
        testList.add("ss");
        testList.add("ss");
        testList.add("ss");
        //其中 this 最好为单例类，以此保证在整个 APP 生命周期，该类都能够检测到 SDK 连接状态的变更
        RongIM.setConnectionStatusListener(this);
    }

    public ArrayList<String> getTestList() {
        return testList;
    }

    public void setTestList(ArrayList<String> testList) {
        this.testList = testList;
    }

    public static Context getContext() {
        return mContext;
    }

    private void initLogger() {
        FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                .showThreadInfo(false)  // 是否显示线程信息 默认显示 上图Thread Infrom的位置
                .methodCount(0)         // 展示方法的行数 默认是2  上图Method的行数
                .methodOffset(7)        // 内部方法调用向上偏移的行数 默认是0
//                .logStrategy(customLog) // 改变log打印的策略一种是写本地，一种是logcat显示 默认是后者（当然也可以自己定义）
                .tag("Weetop:")   // 自定义全局tag 默认：PRETTY_LOGGER
                .build();
        Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy) {
            @Override
            public boolean isLoggable(int priority, String tag) {
                return true;
            }
        });

    }

    static {
        //全局设置默认的 Header
        SmartRefreshLayout.setDefaultRefreshHeaderCreator((context, layout) -> {
            //开始设置全局的基本参数（这里设置的属性只跟下面的MaterialHeader绑定，其他Header不会生效，能覆盖DefaultRefreshInitializer的属性和Xml设置的属性）
            layout.setEnableHeaderTranslationContent(true);
            return new ClassicsHeader(context).setDrawableArrowSize(14).setDrawableSize(14).setEnableLastTime(false);
        });
        //全局设置默认的 footer
        SmartRefreshLayout.setDefaultRefreshFooterCreator((context, layout) -> {

            //开始设置全局的基本参数（这里设置的属性只跟下面的MaterialHeader绑定，其他Header不会生效，能覆盖DefaultRefreshInitializer的属性和Xml设置的属性）
            layout.setEnableHeaderTranslationContent(true);
            return new ClassicsFooter(context).setDrawableArrowSize(14).setDrawableSize(14);
        });
    }

    @Override
    public void onChanged(ConnectionStatus connectionStatus) {
        if (connectionStatus.equals(ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT)) {
            //当前用户账号在其他端登录，请提示用户并做出对应处理
        } else if (connectionStatus.equals(ConnectionStatus.CONN_USER_BLOCKED)) {
            //用户被封禁，请提示用户并做出对应处理
        }
    }

}
